Questa pagina spiega passo dopo passo come compilare FreeCAD 0.19 o più recente su Windows utilizzando il compilatore MSVC di Microsoft. Per informazioni sull'utilizzo di MSYS2/MinGW, vedere Compilare su MinGW. Per altre piattaforme vedere Compilare FreeCAD.
La compilazione di FreeCAD su Windows richiede diversi strumenti e librerie.
Di seguito descriviamo la gestione del codice sorgente usando il frontend TortoiseGit. Questo frontend si integra direttamente in Windows con Esplora file e dispone di una grande comunità di utenti per ricevere assistenza in caso di problemi.
A questo punto si può scaricare il codice sorgente di FreeCAD:
Quando si utilizza il frontend di Git TortoiseGit:
https://github.com/FreeCAD/FreeCAD.git
e clicca OK.
L'ultimo codice sorgente verrà scaricato dal repository Git di FreeCAD e la cartella verrà tracciata da Git.
Per creare un ramo locale e scaricare il codice sorgente è necessario aprire un terminale (prompt dei comandi) e portarsi nella directory in cui si desidera creare il sorgente, quindi digitare:
git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD.git
Il compilatore predefinito (consigliato) è MS Visual Studio (MSVC). Sebbene sia possibile utilizzare altri compilatori, ad esempio gcc tramite Cygwin o MinGW, questi non sono testati o esaminati qui.
È possibile ottenere una versione gratuita di MSVC (per uso individuale) scaricando la versione Community di MS Visual Studio.
Per chi vuole evitare l'installazione completa dell'ingombrante MSVC al solo scopo di avere un compilatore può vedere Compilare in Windows - Occupare meno spazio.
Nota: Sebbene l'edizione Community di MSVC sia gratuita, per utilizzare l'IDE per un periodo di prova superiore a 30 giorni è necessario creare un account Microsoft. Se compilerai solo utilizzando la riga di comando, non avrai bisogno dell'IDE e quindi di nessun account Microsoft.
Come IDE alternativo gratuito e OpenSource puoi usare KDevelop. Puoi usare KDevelop per modificare e scrivere codice C++, ma devi usare la riga di comando per compilare.
Facoltativamente è possibile includere i percorsi di alcune cartelle nella variabile PATH di sistema. Ciò è utile se si desidera accedere ai programmi in queste cartelle dalla riga di comando/powershell o se si desidera che il compilatore o CMake trovino programmi speciali. Oltre a questo, potrebbe essere necessario aggiungere cartelle al PATH se non si sono utilizzate le opzioni corrispondenti durante l'installazione del programma.
C:\Program Files\CMake\bin to the PATH.
C:\Program Files\TortoiseGit\bin to the PATH.
Per aggiungere percorsi di cartelle alla variabile PATH:
Una volta che hai tutti gli strumenti, le librerie e il codice sorgente di FreeCAD necessari, sei pronto per iniziare il processo di configurazione e compilazione. Questo processo procederà in cinque fasi:
Inizialmente configurare l'ambiente di compilazione utilizzando CMake:
Nota: È importante specificare la variante col numero di bit corretta. Se hai la variante a 64 bit di LibPack devi usare anche il compilatore x64.
Questo avvierà la configurazione e fallirà a causa delle impostazioni mancanti. Questo è normale: non hai ancora specificato la posizione del LibPack. Tuttavia, potrebbero verificarsi altri errori, che richiedono ulteriori azioni da parte tua.
Se non riesce, con il messaggio che Visual Studio non è stato trovato, il supporto CMake in MSVC non è ancora installato. Per farlo:
Se fallisce, con un messaggio relativamente alla versione Python errata o Python mancante, allora:
Se non appaiono errori da Visual Studio o da Python, va tutto bene, ma CMake non ha ancora tutte le impostazioni necessarie. Pertanto successivamente:
Ora non dovrebbero apparire errori. Se si continua a riscontrare errori, che non si riesce a diagnosticare, visitare le pagine Install/Compile forum sul sito Web del forum di FreeCAD. Se CMake ha terminato correttamente, cliccare su Generate. Fatto ciò si può chiudere CMake e avviare la compilazione di FreeCAD utilizzando Visual Studio. Tuttavia, per la prima compilazione, tenerlo aperto nel caso in cui si desideri o sia necessario modificare alcune opzioni per il processo di compilazione.
Il sistema di generazione CMake offre la flessibilità necessaria per il processo di creazione. Ciò significa che è possibile attivare e disattivare alcune funzionalità o moduli tramite le variabili di CMake.
Ecco una descrizione di alcune di queste variabili:
Nome Variabile | Descrizione | Valore di Default |
---|---|---|
BUILD_XXX | Fare il Build di FreeCAD con il componente XXX. Se non si vuole o non si ha bisogno di compilare ad es. l'ambiente OpenSCAD, disabilitare la variabile BUILD_OPENSCAD. FreeCAD quindi non avrà questo ambiente di lavoro. Nota: Alcuni componenti sono necessari per altri componenti. Se per esempio deselezioni BUILD_ROBOT CMake ti informerà che il componente Path non può essere compilato correttamente. Pertanto controllare l'output di CMake dopo aver modificato un'opzione BUILD_XXX! | dipende |
BUILD_ENABLE_CXX_STD | La versione standard del linguaggio C++. C++14 è il più alto possibile per FreeCAD 0.19 mentre almeno C++17 è richiesto per FreeCAD 0.20. Vedere anche la nota nella sezione Compilazione con Visual Studio 15 (2017) e successive | dipende |
BUILD_DESIGNER_PLUGIN | Per creare il plug-in Qt Designer, consultare questa sezione di seguito | OFF |
BUILD_FLAT_MESH | Necessaria per avere una build che includa la funzionalità CreateFlatMesh | OFF |
CMAKE_INSTALL_PREFIX | La cartella di output durante la creazione della destinazione INSTALL, vedere anche la sezione Esecuzione e installazione di FreeCAD | Cartella d'installazione predefinita del programma in Windows |
FREECAD_COPY_DEPEND_DIRS_TO_BUILD | Copia le librerie dipendenti necessarie per eseguire FreeCAD.exe nella cartella di compilazione. Vedere anche la sezione Esecuzione e installazione di FreeCAD. Nota: le opzioni FREECAD_COPY_XXX appaiono solo se le librerie non sono già state copiate. Se si ha solo bisogno di aggiornare/passare a un'altra versione di LibPack, consultare la sezione Aggiornamento del LibPack. Se si desidera ripristinare le opzioni per qualche motivo, si devono eliminare tutte le cartelle nella cartella di compilazione, ad eccezione della cartella LibPack. In CMake cancellare la cache e avviare come se si dovesse compilare per la prima volta. |
OFF |
FREECAD_COPY_LIBPACK_BIN_TO_BUILD | Copia i file binari LibPack necessari per eseguire FreeCAD.exe nella cartella di compilazione. Vedere anche la sezione Esecuzione e installazione di FreeCAD. | OFF |
FREECAD_COPY_PLUGINS_BIN_TO_BUILD | Copia i file del plugin di Qt necessari per eseguire FreeCAD.exe nella cartella di compilazione. Vedere anche la sezione Esecuzione e installazione di FreeCAD. | OFF |
FREECAD_LIBPACK_USE | Attiva o disattiva l'utilizzo di FreeCAD LibPack. | ON |
FREECAD_LIBPACK_DIR | Directory in cui si trova il LibPack. | Cartella del codice sorgente di FreeCAD |
FREECAD_RELEASE_PDB | Crea librerie di debug (*.pdb) anche per build di rilascio. Non influisce sulla velocità (come farebbe una vera build di debug) e può essere molto utile per individuare arresti anomali nel codice di FreeCAD. Nel caso in cui FreeCAD si arresti in modo anomalo, verrà creato un file crash.dmp che può essere caricato con MSVC e se si dispone dei file PDB corrispondenti più il codice sorgente di quella versione è possibile eseguire il debug attraverso il codice. Senza i file PDB non è possibile eseguire il debug del codice e tutto ciò che il debugger mostra è il nome della DLL in cui si è verificato il crash. | ON |
FREECAD_USE_MP_COMPILE_FLAG | Aggiunge l'opzione /MP (multiprocessore) ai progetti di Visual Studio, abilitando accelerazioni nelle CPU multi-core. Questo può accelerare notevolmente le build sui processori moderni. Nota: Se disattivi FREECAD_USE_PCH, la compilazione può sovraccaricare rapidamente lo spazio dell'heap, anche se hai 16 GB di RAM. |
ON |
FREECAD_USE_PCH | Precompila the headers per risparmiare tempo di compilazione. | ON |
FREECAD_USE_PYBIND11 | Include la libreria PyBind11. Necessario avere una build che includa la funzionalità CreateFlatMesh. Nota: dopo averla attivata si potrebbe ricevere un errore di configurazione. Basta configurare di nuovo e il problema dovrebbe scomparire. |
OFF |
A seconda del compilatore, il processo per la compilazione di FreeCAD sarà leggermente diverso. Nelle sezioni seguenti sono descritti i flussi di lavoro noti. Se stai costruendo con Qt Creator, passa a Compilazione con Qt Creator (obsoleto), altrimenti procedi direttamente:
Se si vuole compilare dalla riga di comando, l'output di CMake mostrerà il comando corretto da eseguire (che dipende dalla release directory configurata). Ma questo comando produrrà una compilazione "Debug" che non funziona su Windows e si traduce in un errore di importazione Numpy in FreeCAD (che è un problema noto ma difficile da risolvere). È necessario specificare l'opzione --config Release per forzare una build Release:
cmake --build E:/release --config Release
Tenere presente che l'impostazione delle variabili CMake come CMAKE_BUILD_TYPE non ha alcun effetto, funziona solo specificando l'opzione --config come mostrato sopra.
Ci vorrà molto tempo.
Per compilare un FreeCAD pronto all'uso, compila la destinazione INSTALLA , vedere la sezione Esecuzione e installazione di FreeCAD.
Se non ricevi errori, hai finito. Congratulazioni! Puoi uscire da MSVC o tenerlo aperto.
Importante: A partire da Visual Studio 17.4 non è possibile utilizzare l'ottimizzazione del codice attiva per impostazione predefinita per il target SketcherGui. In tal caso, i vincoli angolari verranno posizionati in modo errato negli schizzi. Per risolvere questo problema, fare clic con il pulsante destro del mouse su questo target in Esplora soluzioni MSVC e selezionare l'ultima voce Proprietà nel menu contestuale. Nella finestra di dialogo che appare andare su C/C++ → Ottimizzazione e disabilitare l'impostazione Ottimizzazione. Infine costruire di nuovo il target ALL_BUILD.
Per una compilazione di debug è necessario utilizzare Python incluso nel LibPack. Per verificarlo:
Come prerequisito per la build di debug, devi fare questo:
Adesso puoi compilare:
Richiederà molto tempo.
Se non ci sono stati errori di compilazione e se le opzioni FREECAD_COPY_* menzionate nella Fase di configurazione di CMake sopra sono state abilitate, si può avviare la build di debug:
Questo avvierà la build di debug di FreeCAD ed è possibile utilizzare l'IDE MSVC per eseguirne il debug.
Un tutorial in lingua inglese che inizia con la configurazione in CMake Gui e continua con il comando `Build` in Visual Studio 16 2019 è disponibile unlisted su YouTube all'indirizzo Tutorial: Build FreeCAD from source on Windows 10 .
Ora è possibile creare FreeCAD
Una volta completato, può essere eseguito: Ci sono 2 triangoli verdi in basso a sinistra. Uno è il debug. L'altro è l'eseguibile. Scegliere quello che si desidera.
I passaggi su come compilare dalla riga di comando dipendono dal compilatore. Per MSVC 2017 i passaggi sono:
msbuild ALL_BUILD.vcxproj /p:Configuration=Release
o
msbuild INSTALL.vcxproj /p:Configuration=Release
Questi passaggi possono anche essere automatizzati. Ecco ad esempio una soluzione per MSVC 2017:
compile-FC install
Invece di chiamare compile-FC con l'opzione install si può anche usare debug o release:
debug - compila FreeCAD nella configurazione di debug
release - compila FreeCAD nella configurazione della versione
install - compila FreeCAD nella configurazione di rilascio e crea una versione d'installazione
Esistono 2 metodi per eseguire FreeCAD compilato:
Metodo 1: Eseguire FreeCAD.exe che si trova nella cartella di compilazione nella sottocartella bin
Metodo 2: compilare il target INSTALL
Il metodo 2 è quello più semplice, perché assicura automaticamente che tutte le librerie necessarie per eseguire FreeCAD.exe siano nella cartella corretta. FreeCAD.exe e le librerie verranno emessi nella cartella specificata nella variabile CMake CMAKE_INSTALL_PREFIX.
Per il Metodo 1 devi abilitare le opzioni FREECAD_COPY_* menzionate nella Fase di configurazione di CMake sopra.
Durante l'esecuzione di FreeCAD è possibile riscontrare DLL mancanti quando si utilizzano determinati ambienti di lavoro o funzionalità di ambienti di lavoro. Il messaggio di errore nella console di FreeCAD non ti dirà quale DLL manca. Per scoprirlo è necessario utilizzare uno strumento esterno:
import os os.system(r"~\DependenciesGui.exe")
Nota: invece di ~ si deve specificare il percorso completo di DependenciesGui.exe sul tuo sistema.
FreeCAD è sviluppato molto attivamente. Pertanto il suo codice sorgente cambia quasi quotidianamente. Nuove funzionalità vengono aggiunte e i bug corretti. Per beneficiare di queste modifiche al codice sorgente, è necessario ricompilare FreeCAD. Questo avviene in due fasi:
Quando si utilizza il frontend di Git TortoiseGit:
Finalmente cliccare su OK.
Aprire un terminale (prompt dei comandi) e passare alla cartella di origine. Quindi digitare:
git pull https://github.com/FreeCAD/FreeCAD.git master
dove master è il nome del ramo di sviluppo principale. Se si vuole ottenere il codice da un altro ramo, usare il suo nome invece di master.
Se viene rilasciata una nuova versione principale di una dipendenza di terze parti come Open Cascade o se una dipendenza di terze parti ha importanti correzioni di bug, viene rilasciato un nuovo LibPack. Si può trovare l'ultima versione qui.
Per aggiornare il tuo LibPack, la seguente procedura è la pratica migliore:
Per partecipare allo sviluppo di FreeCAD è necessario compilare e installare i seguenti strumenti:
FreeCAD usa Qt come toolkit per la sua interfaccia utente. Tutte le finestre di dialogo sono impostate in file UI che possono essere modificati utilizzando il programma Qt Designer che fa parte di qualsiasi installazione di Qt ed è anche incluso nel LibPack. FreeCAD ha il proprio set di widget Qt per fornire funzionalità speciali come l'aggiunta di un'unità ai campi di input e per impostare le proprietà delle preferenze.
Il plugin non può essere caricato da Qt Designer se è stato compilato utilizzando una versione di Qt diversa da quella su cui si basa Qt Designer/Qt Creator. Pertanto il plugin deve essere compilato insieme a FreeCAD:
Come risultato si otterrà il file del plugin 'FreeCAD_widgets.dll nella cartella
~\src\Tools\plugins\widget\Release
Per installare il plugin, copia la DLL in
Infine (ri)avviare Qt Designer e controllare il suo menu Help → Plugins. Se il plugin FreeCAD_widgets.dll è elencato come caricato, ora si può progettare e modificare i file .ui di FreeCAD. In caso contrario, si deve compilare la DLL da se.
Se si preferisce usare Qt Creator invece di Qt Designer, il file del plugin deve essere posizionato in questa cartella:
C:\Qt\Qt5.15.2 \Tools\QtCreator\bin\plugins\designer
Quindi (ri)avviare Qt Creator, passare alla modalità Design e controllare il menu Tools → Form Editor → About Qt Designer Plugins. Se il plugin FreeCAD_widgets.dll è elencato tra quelli caricati, si può progettare e modificare i file .ui di FreeCAD. In caso contrario, ci si deve compilare la DLL.
FreeCAD ha la funzionalità per fornire miniature di anteprima per i file *.FCStd. Ciò significa, che nel file explorer di Windows i file *.FCStd, sono mostrati con uno screenshot del modello che contiene. Per fornire questa funzionalità, FreeCAD deve avere il file FCStdThumbnail.dll installato in Windows.
La DLL viene installata in questo modo:
regsvr32 FCStdThumbnail.dll
Quindi controllare se funziona, assicurarsi che in FreeCAD l'opzione delle preferenze Salva la miniatura nel file di progetto al salvataggio del documento sia abilitata e salvare il modello. Quindi visualizzare in Windows Explorer la cartella del modello salvato utilizzando una vista simboli. Ora si dovrebbe vedere uno screenshot del modello nella vista delle cartelle.
Per compilare FCStdThumbnail.dll
Il LibPack viene fornito con una versione di Open Cascade adatta all'uso generale. Tuttavia, in alcune circostanze potresti voler compilare con una versione alternativa di Open Cascade, come ad esempio una delle loro versioni ufficiali o un fork con patch.
Durante la compilazione di Open Cascade per FreeCAD, si tenga presente che non vi è alcuna garanzia che FreeCAD funzioni con tutte le versioni di Open Cascade. Si noti inoltre che quando si utilizza la libreria Netgen, è necessario utilizzare una versione NetGen approvata per la compilazione con la versione Open Cascade che si desidera compilare.
Compilare:
Nome Variabile | Descrizione | Valore di Default |
---|---|---|
3RDPARTY_DIR | Percorso verso i componenti di terze parti. Si consiglia di utilizzare la cartella come input in cui si trova il LibPack utilizzato. Lasciare esplicitamente vuoto questo campo. | vuoto |
3RDPARTY_DOXYGEN_EXECUTABLE | Percorso dell'eseguibile del componente di terze parti Doxygen. Si consiglia di installare Doxygen. Così CMake lo troverà automaticamente. | vuoto |
3RDPARTY_FREETYPE_DIR | Percorso del componente di terze parti necessario Freetype. Si consiglia di utilizzare la cartella come input in cui si trova il LibPack utilizzato. | vuoto |
3RDPARTY_RAPIDJSON_DIR | Disponibile solo se viene utilizzato USE_RAPIDJSON. Percorso del componente di terze parti RapidJSON. Si consiglia di NON utilizzare una cartella LibPack esistente come input. Si può usare la cartella RapidJSOn da un LibPack, ma copiata in una nuova cartella e poi usare questa nuova cartella come input. | vuoto |
3RDPARTY_TCL_DIR | Percorso al componente di terze parti necessario TCL. Si consiglia di NON utilizzare una cartella LibPack esistente come input. Prendere ad esempio una di queste versioni, estrarla e prenderla come cartella di input per CMake. | vuoto |
3RDPARTY_TK_DIR | Percorso del componente di terze parti necessario TK. Si consiglia di NON utilizzare una cartella LibPack esistente come input. Prendere ad esempio una di queste versioni, estrarla e prenderla come cartella di input per CMake. | vuoto |
3RDPARTY_VTK_DIR | Disponibile solo se viene utilizzato USE_VTK. Percorso del componente di terze parti necessario VTK. Si consiglia di utilizzare la cartella come input in cui si trova il LibPack utilizzato. Se si utilizza un'altra cartella, assicurarsi di non utilizzare VTK 9.x o versioni successive. | vuoto |
BUILD_RELEASE_DISABLE_EXCEPTIONS | Disabilita la gestione delle eccezioni per le build di rilascio. Per FreeCAD si deve impostarlo su OFF. | ON |
INSTALL_DIR | Cartella di output durante la creazione della destinazione INSTALL. Se la compilazione è andata a buon fine, prendere i file da questa cartella per aggiornare il tuo LibPack. | Cartella d'installazione predefinita del programma in Windows |
INSTALL_DIR_BIN | Sottocartella di output per la DLL durante la creazione del target INSTALL. Si deve cambiarlo in bin. | win64/vc14/bin |
INSTALL_DIR_LIB | Sottocartella di output per i file .lib durante la creazione della destinazione INSTALL. Si deve cambiarlo in lib. | win64/vc14/lib |
USE_RAPIDJSON | Per compilare Open Cascade con supporto per RapidJSON. L'abilitazione è obbligatoria per ottenere supporto per il formato file glTF. | OFF |
USE_VTK | Per compilare Open Cascade con supporto per VTK. Abilitare questo è ottimale. Si può usarlo per costruire il bridge VTK di Open Cascade. | OFF |
Per creare FreeCAD, utilizzando Open Cascade autocompilato, è necessario eseguire le seguenti operazioni:
Il LibPack viene fornito con una versione di Netgen che sarà stata testata per essere compilata con la versione Open Cascade del LibPack. Il problema è che ogni nuova versione di Netgen cambia l'API. Anche ogni nuova versione di Open Cascade fa lo stesso. Pertanto non si può semplicemente cambiare in modo semplice la versione di Netgen.
Tuttavia, potresti comunque compliare Netgen. Questa è un'attività semplice:
Nome Variabile | Descrizione | Valore di Default |
---|---|---|
CMAKE_INSTALL_PREFIX | Cartella di output durante la creazione della destinazione INSTALL. Se la compilazione è andata a buon fine, prendere i file da questa cartella per aggiornare il tuo LibPack. | C:/netgen |
OpenCasCade_DIR | Percorso dei file CMake di Open Cascade. Se si è compilato Open Cascade come descritto nella sezione Compilazione di Open Cascade si può usare la sottocartella cmake della cartella usata come INSTALL_DIR. In caso contrario, usare la sottocartella cmake del tuo LibPack. Si noti che il LibPack deve già contenere una corretta build Open Cascade. Indipendentemente dalla cartella utilizzata, si deve creare anche una sottocartella lib e copiarvi i file freetype.lib e freetyped.lib dal tuo LibPack. | vuoto |
USE_GUI | Impostarlo a OFF | ON |
USE_NATIVE_ARCH | Impostarlo su OFF; questo è necessario solo per supportare le CPU più vecchie che non hanno il set di istruzioni AVX2. | ON |
USE_OCC | Impostarlo a ON | OFF |
USE_PYTHON | Impostarlo a OFF | ON |
USE_SUPERBUILD | Impostarlo a OFF | ON |
ZLIB_INCLUDE_DIR | Percorso del componente di terze parti necessario zlib. Si consiglia di utilizzare la cartella come input in cui si trova il LibPack utilizzato. | vuoto |
ZLIB_LIBRARY_DEBUG | Percorso del file ZLib zlibd.lib. Si trova nella sottocartella lib della cartella LibPack. | vuoto |
ZLIB_LIBRARY_RELEASE | Il percorso del file ZLib zlib.lib. Si trova nella sottocartella lib della cartella LibPack. | vuoto |
nome: CMAKE_DEBUG_POSTFIX, tipo: stringa, contenuto: _d
Ciò garantisce che i nomi dei file delle librerie di debug abbiano un nome diverso rispetto alle librerie di rilascio e non possano essere successivamente scambiati accidentalmente.
Per compilare FreeCAD, utilizzando Netgen autocompilato, è necessario eseguire le seguenti operazioni:
Vedere anche